package vue;
import java.awt.BorderLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import memory.Memory;
import memory.NombreImpairException;
import controleur.CTheme;

public class VRootWindow extends JFrame {
	
	protected VMenubar menu; //Bandeau en bas de la fenetre
	protected JPanel content, bandeau; //Conteneur principal, bandeau de titre
	protected VLevel game;
	
	public VRootWindow() {
		/*Caracteristiques de base*/
		setTitle("Accueil Memory"); 
		setSize(1024,768);  
		setLocationRelativeTo(null);
		setResizable(false);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		/*Construction de l'interface*/
		setLayout(new BorderLayout());
		menu = new VMenubar(this);
		add(menu, BorderLayout.SOUTH);
		buildHome();
		setVisible(true);
	}
	
	public void buildHome() {
		
		/*
		 * Construit la page d'acceuil dans le conteneur principal + Bandeau titre
		 */
		
		content = new JPanel();
		content.setBackground(Memory.BG_COLOR);
		GridBagLayout contentLayout = new GridBagLayout();
		GridBagConstraints contentC = new GridBagConstraints();
		contentC.fill = GridBagConstraints.CENTER;
		contentLayout.setConstraints(content, contentC);
		content.setLayout(contentLayout);
		
		JPanel mainMenu = new JPanel();
		mainMenu.setBackground(Memory.BG_COLOR);
		GridLayout mainMenuLayout = new GridLayout(2,2,10,10);
		mainMenu.setLayout(mainMenuLayout);
		
		//Création des boutons avec une image à l'interieur (le bouton s'ajuste à la taille de l'image)
		JButton niv1= new JButton(new ImageIcon("chemin-relatif"));
		niv1.addActionListener(new CTheme(this, 1));
		JButton niv2= new JButton(new ImageIcon("chemin-relatif"));
		niv2.addActionListener(new CTheme(this, 2));
		JButton niv3= new JButton(new ImageIcon("chemin-relatif"));
		niv3.addActionListener(new CTheme(this, 3));
		JButton niv4= new JButton(new ImageIcon("chemin-relatif"));
		niv4.addActionListener(new CTheme(this, 4));
		
		mainMenu.add(niv1);
		mainMenu.add(niv2);
		mainMenu.add(niv3);
		mainMenu.add(niv4);
		content.add(mainMenu);
		
		bandeau = new JPanel();
		bandeau.setBackground(Memory.BG_COLOR.darker());
		bandeau.add(new JLabel("Memory"));
		
		add(bandeau, BorderLayout.NORTH);
		add(content, BorderLayout.CENTER);
	}
	
	public void reBuildHome() {
		menu.setQuitter();
		content.setVisible(true);
		bandeau.setVisible(true);
	}
	
	public void buildLvl(int lvl, int theme) {
		
		/*
		 * Constuction du niveau lvl
		 * -Effacement de content et bandeau
		 * -Creation d'un JPanel avec une grille de jeu
		 */
		menu.setRetour();
		content.setVisible(false);
		bandeau.setVisible(false);
		
		switch (lvl) {
		case 1:
			try {
				game = new VLevel(2, 2, theme);
				add(game, BorderLayout.CENTER);
			} catch (NombreImpairException e) {}
			break;
			
		case 2:
			try {
				game = new VLevel(2, 3, theme);
				add(game, BorderLayout.CENTER);
			} catch (NombreImpairException e) {}
			break;
			
		case 3:
			try {
				game = new VLevel(2, 4, theme);
				add(game, BorderLayout.CENTER);
			} catch (NombreImpairException e) {}
			break;
			
		case 4:
			try {
				game = new VLevel(3, 4, theme);
				add(game, BorderLayout.CENTER);
			} catch (NombreImpairException e) {}
			break;
			
		default:
			break;
		}
	}
	
	public boolean isInGame() {
		return !content.isVisible();
	}
	
	public VLevel getGame() {
		return game;
	}

}
